package com.dwy2002.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dwy2002.common.Result;
import com.dwy2002.pojo.dto.order.RefundStatusEnableRequestDTO;
import com.dwy2002.pojo.po.order.Orders;
import com.dwy2002.pojo.po.order.PaymentRecords;
import com.dwy2002.pojo.vo.order.PaymentRecordsVO;

/**
 * @author 杜伟毅
 * @version 1.0
 * @since 2025/03/06
 */
public interface IPaymentRecordsService extends IService<PaymentRecords> {

    /**
     * 保存支付信息
     *
     * @param orders 订单信息
     * @author 杜伟毅
     * @since 2025/3/14 0014 16:33
     */
    void savePaymentRecord(Orders orders);

    /**
     * 更新单个订单变为不可退款
     *
     * @param orderId 订单id
     * @return true：更新成功 false：更新失败
     * @author 杜伟毅
     * @since 2025/3/14 0014 22:41
     */
    boolean expireRefundStatusByOrder(String orderId);

    /**
     * 批量更新过期订单的可退款状态
     *
     * @author 杜伟毅
     * @since 2025/3/14 0014 22:42
     */
    void batchUpdateRefundStatus();

    /**
     * 更新单个订单变为可退款
     *
     * @author 杜伟毅
     * @since 2025/3/14 0014 23:08
     */
    Result<Void> enableRefundStatus(RefundStatusEnableRequestDTO dto);

    /**
     * 返回该订单是否为不可退款
     *
     * @param id 订单id
     * @author 杜伟毅
     * @since 2025/5/11 0011 16:44
     */
    Result<PaymentRecordsVO> getIsRefundable(String id);
}
